Логика «ИЛИ» и «И»
Два основания поддерживают всю область комбинаторики. Их применение полностью зависит от того, рассматриваем ли мы задачу как один выбор из нескольких категорий или как последовательность выборов.
Если множество $X$ разбито на непересекающиеся подмножества $X_1, X_2, \dots, X_n$, то общее количество элементов $|X|$ равно сумме размеров этих подмножеств:
$$|X| = |X_1| + |X_2| + \dots + |X_n|$$
Аналогия: Выбор обеда в кафе «Kay’s Quick Lunch», выбирая либо бутерброд из меню основных блюд, либо закуску из меню закусок. Вы не можете выбрать оба одновременно — вы выбираете один пункт.
Если деятельность состоит из $t$ последовательных шагов, где на шаге $i$ есть $n_i$ возможных исходов, то общее количество способов завершить задачу равно произведению вариантов на каждом шаге:
$$N = n_1 \times n_2 \times \dots \times n_t$$
Аналогия: Конфигурирование грузовика «Big Pickup». Вам нужно выбрать двигатель (5 вариантов) И стиль кабины (3 варианта). Общее количество конфигураций равно $5 \times 3 = 15$.
Реализация в коде и сложность
В информатике эти принципы проявляются в структурах циклов. Последовательные циклы представляют принцип сложения, а вложенные циклы — принцип умножения.
for i = 1 to m: println(i)
for j = 1 to n: println(j)
// Принцип умножения (m * n выполнений)
for i = 1 to m:
for j = 1 to n:
println(i, j)